home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / Z-Misc Series / (k)zi.d64 / txt.small recs < prev    next >
Text File  |  2007-03-01  |  3KB  |  132 lines

  1. ╙═┴╠╠ ╙╘╥╔╬╟╙ ╔╬ ╙═┴╠╠ ╥┼├╧╥─╙
  2.  
  3. BY ─ICK ╦LINGENS
  4. ─UTCH ├╧═┴╠ ╒SERS ╟ROUP
  5.  
  6. ╘HE STATEMENT
  7.  
  8.    ╨╥╔╬╘ ╞╔╠┼ 1: X$
  9.  
  10. WRITES ╪$ INTO THE FILE AND ADDS A
  11. DELIMETER.
  12.  
  13. ╘HE STATEMENT 
  14.  
  15.    ╫╥╔╘┼ ╞╔╠┼ 1: X$
  16.  
  17. WRITES ╪$ INTO THE FILE AND ADDS TWO
  18. CHARACTERS FOR THE LENGTH OF THE
  19. STRING.
  20.  
  21. ╘HESE FACTS CAN MEAN A LOSS OF DISK
  22. SPACE, FOR EXAMPLE IF ONE WANTS TO
  23. WRITE 100+ SMALL STRINGS INTO A
  24. ╥┴╬─╧═ FILE, USING ONE RECORD FOR
  25. EACH STRING.
  26.  
  27. ┘OU CAN AVOID THIS BY USING THE
  28. LENGTH OF THE LONGEST STRING AS
  29. RECORD LENGTH.
  30.  
  31. ╞IRST READ ALL THE STRINGS AND
  32. COMPUTE THE MAXIMUM LENGTH OF THE
  33. STRINGS, THEN WRITE EACH STRING INTO
  34. THE FILE WITH
  35.  
  36.    ╨╥╔╬╘ ╞╔╠┼ FNUM,RECNUM: X$,
  37.  
  38. ╘HE COMMA PREVENTS THE SYSTEM FROM
  39. WRITING A DELIMITER INTO THE FILE.
  40.  
  41. SCAN'WORD'LENGTH
  42. WORDS'INTO'FILE
  43. //
  44. ╨╥╧├ SCAN'WORD'LENGTH
  45.  MAX'LENGTH:=0
  46.  NUM:=0
  47.  ╫╚╔╠┼ ╬╧╘ ┼╧─ ─╧
  48.   ╥┼┴─ WORD$
  49.   ╔╞ ╠┼╬(WORD$)>MAX'LENGTH ╘╚┼╬ MAX'
  50.   LENGTH:=╠┼╬(WORD$) // WRAP
  51.  ┼╬─╫╚╔╠┼
  52. ┼╬─╨╥╧├
  53. //
  54. ╨╥╧├ WORDS'INTO'FILE
  55.  ╥┼╙╘╧╥┼
  56.  ╧╨┼╬ ╞╔╠┼ 1,"DEMO",╥┴╬─╧═ MAX'LENGTH
  57.  // USE FIRST RECORD FOR
  58.  // NUMBER OF RECORDS
  59.  ╨╥╔╬╘ ╞╔╠┼ 1,1: ╙╘╥$(NUM),
  60.  ╞╧╥ T:=1 ╘╧ NUM ─╧
  61.   ╥┼┴─ WORD$
  62.   ╨╥╔╬╘ ╞╔╠┼ 1,T+1: WORD$,
  63.  ┼╬─╞╧╥ T
  64.  ├╠╧╙┼ ╞╔╠┼ 1
  65. ┼╬─╨╥╧├ WORDS'INTO'FILE
  66. //
  67. ─┴╘┴ "ABS","AND",...
  68. ─┴╘┴ ...
  69.  
  70. ╬OW ╔╬╨╒╘ ╞╔╠┼ CANNOT BE USED TO READ
  71. THE WORDS FROM THE FILE BECAUSE THE
  72. DELIMETER IS MISSING.
  73.  
  74. ╔ DEVELOPED A 2.0 FUNCTION TO DO
  75. THIS:
  76.  
  77.    ╞╒╬├ GETRAN$(F#,REC,POS,NUM)
  78.  
  79. WHERE
  80.  
  81. F#  - FILE NUMBER IN ╧╨┼╬ STATEMENT
  82. REC - RECORD NUMBER
  83. POS - START POSITION IN RECORD
  84. NUM - NUMBER OF CHARS TO READ
  85.  
  86. ╘HE FUNCTION FIRST CONTROLS IF THE
  87. FILE IS OPEN AND COMPUTES THE SYSTEM
  88. FILE ╔╬─┼╪ (FROM MEMORY LOCATION
  89. 600). ╔F NOT, AN ERROR MESSAGE
  90. FOLLOWS. ╘HEN THE ├╚┴╬╬┼╠ IS COMPUTED
  91. (FROM LOCATION 620), BEING THE
  92. SECUNDARY ADDRESS USED IN THE ╨┴╙╙
  93. STATEMENT.
  94.  
  95. ╞INALLY THE NUMBER OF WANTED
  96. CHARACTERS ARE ╥┼╘╒╥╬ED:
  97.  
  98. ╞╒╬├ GETRAN$(F#,REC,POS,NUM) ├╠╧╙┼─
  99.  ─╔═ COMMAND$ ╧╞ 5
  100.  LOREC:=REC ═╧─ 256
  101.  HIREC:=REC ─╔╓ 256
  102.  INDEX:=1: FND:=╞┴╠╙┼
  103.  ╫╚╔╠┼ ╬╧╘ FND ┴╬─ INDEX<=F# ─╧
  104.   ╔╞ ╨┼┼╦(600+INDEX)=F# ╘╚┼╬
  105.    FND:=╘╥╒┼
  106.   ┼╠╙┼
  107.    INDEX:+1
  108.   ┼╬─╔╞
  109.  ┼╬─╫╚╔╠┼
  110.  ╔╞ ╬╧╘ FND ╘╚┼╬
  111.   ╥┼╨╧╥╘ 203 // FILE NOT FOUND
  112.  ┼╬─╔╞
  113.  CHANNEL:=╨┼┼╦(620+INDEX)
  114.  COMMAND$:="P"+├╚╥$(CHANNEL-$60)
  115.  COMMAND$:+├╚╥$(LOREC)+├╚╥$(HIREC)
  116.  COMMAND$:+├╚╥$(POS)
  117.  ╨┴╙╙ COMMAND$ // SET POINTER
  118.  ╥┼╘╒╥╬ ╟┼╘$(F#,NUM)
  119. ┼╬─╞╒╬├ GETRAN
  120.  
  121. ╧N THIS DISK IS A DEMO PROGRAM WHICH
  122. PERFORMS RANDOM READING FROM A RANDOM
  123. FILE CONTAINING ├╧═┴╠ KEYWORDS (NOT
  124. ALL), EACH IN ONE RECORD.
  125.  
  126. ┬Y CHANGING THE ABOVE PROCEDURE
  127. WORDS'INTO'FILE IT IS POSSIBLE TO PUT
  128. MORE THEN ONE STRING INTO A RECORD.
  129. ╔N THIS CASE SPACES AT THE END OF A
  130. STRING CAN BE USED TO GIVE ALL THE
  131. STRINGS A FIXED LENGTH.
  132.